export function partial(fn: Function, ...partialArgs: any[]) {
  return (...resArgs: any[]) => {
    return fn(...partialArgs, ...resArgs)
  }
}


// function partial(func /*, 0..n args */) {
//   var args = Array.prototype.slice.call(arguments, 1);
//   return function() {
//     var allArguments = args.concat(Array.prototype.slice.call(arguments));
//     return func.apply(this, allArguments);
//   };
// }
